package exception.callstack;
//콜스텍 메소드의 흐름. 이것을 기억하자. 이러한 흐름은 에러가 나든 안나든 상관없이 이렇게 흐른다.
public class CallStack {
	
	public static void main(String[] args) {
		System.out.println("main시작");
		new CallStack().a();
		System.out.println("main종료");
		
	}
	public void a(){
		System.out.println("a()시작");
		b();
		System.out.println("a()종료:");
	}
	public void b(){
		System.out.println("b()시작");
		c();
		System.out.println("b()종료");
		
	}
	public void c(){
		System.out.println("c()시작");
		int i = 10/0; //예외 발생 ->야 0으로는 아무것도 못나누잖아 빠가야로
		//근데 여기서 에러가 났다 하더라도 여기서 딱 멈추는게 아니고 돌아간다. 거슬러 거슬러~
		//에러메시지를 보면 java.lang패키지에 있는 클래스에 정의된 에러가 발생한다. 예외처리도 사실상 클래스란 사실을 알 수 있다. 
		//에러메시지를 보면 에러를 발생시킨것은 C지만 그 C를 호출한 B도 에러가 나고 거슬러 거슬러 메인에까지 에러가 발생함을 알 수 있다. 
		//에러메시지를 호출한 놈도 에러가 나는 거다. 문제가 있는 놈을 호출해서 실행을 하라고 시킨놈도 문제가 있는거지.
		System.out.println("c()종료");
		
	}
}
